package br.com.odonto.modelo.dao;

import java.sql.SQLException;

import br.com.odonto.framework.dao.CreateDaoException;
import br.com.odonto.framework.dao.DaoHelper;
import br.com.odonto.framework.dao.DeleteDaoException;
import br.com.odonto.modelo.entidade.Endereco;

public class EnderecoDao {
	public DaoHelper daoHelper;

	public EnderecoDao() {
		daoHelper = new DaoHelper();
	}

	public void inserir(Endereco endereco) throws CreateDaoException
	{
		try
		{
			daoHelper.beginTransaction();
			String query = "INSERT INTO ENDERECO (ENDERECO,CIDADE,CEP,BAIRRO) VALUES (?,?,?,?)";
			long id = daoHelper.executePreparedUpdateAndReturnGeneratedKeys(
													daoHelper.getConnectionFromContext()
														,query
														,endereco.getEndereco()
														,endereco.getCidade()
														,endereco.getCep()
														,endereco.getBairro());
		
			endereco.setId(id);
			daoHelper.endTransaction();
		}catch(SQLException e)
		{
			daoHelper.rollbackTransaction();
			throw new CreateDaoException("Não foi possível inserir dados no banco",e);
		}
	}
	
	public void atualizar(Endereco endereco) throws SQLException
	{
		String query = "UPDATE PACIENTE SET ENDERECO = ?, CIDADE = ?, CEP = ?, BAIRRO = ? WHERE id = ?";
		daoHelper.executePreparedUpdate(query
												, endereco.getEndereco()
												, endereco.getCidade()
												, endereco.getCep()
												, endereco.getBairro()
												, endereco.getId());
			
	}
	
	public void excluir(Endereco endereco) throws DeleteDaoException
	{
		String query = "DELETE FROM ENDERECO WHERE ID = ?";
		try {
			daoHelper.executePreparedUpdateIntoSingleTransaction(query, endereco.getId());
		} catch (SQLException e) {
			throw new DeleteDaoException("Não foi possível excluir endereco",e);
		}
	}
}
